package com.ccc.boot.system.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.ccc.boot.base.BaseDO;
import com.ccc.boot.validation.Add;
import com.ccc.boot.validation.Update;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.security.core.GrantedAuthority;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 角色表
 *
 * @author superC
 * @version 0.1.0
 * @date 2022/3/23
 */

@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_role")
public class SysRole extends BaseDO implements GrantedAuthority {

    private static final long serialVersionUID = 6360203611982929788L;

    /**
     * 角色编码
     */
    @Size(max = 20, message = "角色编码最大长度为20个字符", groups = {Add.class, Update.class})
    @NotBlank(message = "角色编码不能为空") // TODO notempty注解不生效
    private String code;

    /**
     * 角色名称
     */
    @Size(max = 20, message = "角色名称最大长度为20个字符", groups = {Add.class, Update.class})
    @NotBlank(message = "角色名称不能为空")
    private String name;

    /**
     * 状态(1启用；0停用)
     */
    @NotNull(message = "角色状态不能为空")
    private Integer status;

    /**
     * 备注说明
     */
    private String memo;

    /**
     * 如果授予的权限可以当作一个String的话，就可以返回一个String
     *
     * @return
     */
    @Override
    public String getAuthority() {
        return code;
    }
}